"""
    @Author  ：思念 
    @File    ：12.唯品会商品信息获取.py
    @Date    ：2025/4/9 16:41 
"""
import json
from DrissionPage.common import By
from DrissionPage import ChromiumPage

page = ChromiumPage()
url = 'https://category.vip.com/suggest.php?keyword=%E7%94%B5%E8%84%91&ff=235%7C12%7C1%7C1&tfs_url=%2F%2Fmapi-pc.vip.com%2Fvips-mobile%2Frest%2Fshopping%2Fpc%2Fsearch%2Fproduct%2Frank&page=1'
page.listen.start('vips-mobile/rest/shopping/pc/product/module/list/v2')
page.get(url)

for item in page.listen.steps():
    response_body = item.response.body

    try:
        # 提取 JSON 字符串部分
        # 查找response_body中第一个出现的大括号索引，用于定位JSON数据的开始位置
        start_index = response_body.find('{')
        # 查找response_body中最后一个出现的大括号索引，并加1，用于定位JSON数据的结束位置
        end_index = response_body.rfind('}') + 1
        # 根据起始和结束索引提取response_body中的JSON字符串
        json_str = response_body[start_index:end_index]

        # 将提取的JSON字符串转换为字典对象
        info_dict = json.loads(json_str)

        # 遍历字典中的产品信息列表
        for temp in info_dict['data']['products']:
            # 初始化一个字典来存储商品信息
            shop_info = dict()
            # 从产品信息中提取并保存商品名称
            shop_info['商品名称'] = temp['title']
            # 从产品信息中提取并保存商品品牌
            shop_info['商品品牌'] = temp['brandShowName']
            # 从产品信息中提取并保存商品价格
            shop_info['商品价格'] = temp['price']['salePrice']
            # 打印当前商品的信息
            print(shop_info)

        # 尝试找到页面上名为'cat-paging-next'的按钮，以用于后续的页面导航
        button = page.ele((By.CLASS_NAME, 'cat-paging-next'), timeout=3)
        if button:
            button.click()
        else:
            print('爬虫结束...')
            page.quit()
    except AttributeError:
        print('数据为空:', response_body)
